package test.specs.atualizausuario;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.notNullValue;

import org.jbehave.core.annotations.Given;
import org.jbehave.core.annotations.Then;
import org.jbehave.core.annotations.When;

import br.com.ffm.info.praticas.fiptwitter.FipTwitter;
import br.com.ffm.info.praticas.fiptwitter.Usuario;

public class AcessarDadosDoUsuarioCenario {
	
	private FipTwitter twitter;
	Exception resultException;
	private Usuario user;
	
	
	@Given("eu acesse o serviço do FIPTwitt")
	public void euAcesseOServicoDoFIPTwitt() {
		twitter = new FipTwitter();
	}
	
	@When ("busco pela biografia do usuário de login Aspira01")
	public void buscoPelaBiografiaDeUmUsuario(){
		try{
			user = twitter.buscarUsuario("Aspira01");
		}catch(Exception e){
			resultException = e;
		}
		try{
			user.getInformações().getBiografia();
		}catch(Exception e){
			resultException = e;
		}
		   
	}
	
	@When ("busco pelo Email do usuário de login Aspira01")
	public void buscoPeloEmailDeUmUsuario(){
		try{
			user = twitter.buscarUsuario("Aspira01");
		}catch(Exception e){
			resultException = e;
		}
		try{
			user.getInformações().getEmail();
		}catch(Exception e){
			resultException = e;
		}
		   
	}
	
	@When ("busco pelo website do usuário de login Aspira01")
	public void buscoPeloWebsiteDeUmUsuario(){
		try{
			user = twitter.buscarUsuario("Aspira01");
		}catch(Exception e){
			resultException = e;
		}
		try{
			user.getInformações().getWebsite();
		}catch(Exception e){
			resultException = e;
		}
		   
	}
	
	@When ("busco pela biografia do usuário de login Aspira01")
	public void buscaLocalizaçãoDeUmUsuario(){
		try{
			user = twitter.buscarUsuario("Aspira01");
		}catch(Exception e){
			resultException = e;
		}
		try{
			user.getInformações().getLocalização();
		}catch(Exception e){
			resultException = e;
		}
		   
	}
	
	@Then("deve aparecer o erro: $erro")
	public void deveAparecerOErro(String erro){
		assertThat(resultException, notNullValue());
		assertThat(erro, equalTo(resultException.getMessage()));
	}

}

